#include <linux/input.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int touch_fd;
struct input_event ts;

int event(int *x,int *y)
{
    while(1)
    {
        read(touch_fd,&ts,sizeof(ts));
        // printf("ts.type = %d\n",ts.type);
        // printf("ts.code = %d\n",ts.code);
        // printf("ts.value = %d\n",ts.value);
        if(ts.type == 3 && ts.code == 0)//判断是否为X轴
            *x = ts.value*800/1022;//0~1022 0~800 *800/1022:将1022坐标改成800坐标
        if(ts.type == 3 && ts.code == 1)//判断是否为Y轴
            *y = ts.value*480/598;//0~598 0~480 *480/598：将598坐标改成480坐标
        // if(ts.type == 1 && ts.code == 330 && ts.value == 1)//判断是否按下触摸屏
        //     break;
        
    }
}

int main()
{
    touch_fd = open("/dev/input/event0",O_RDWR);
    if(touch_fd == -1)
    {
        printf("打开触摸屏失败\n");
        return -1;
    }

    int x,y;
    event(&x,&y);
    printf("(%d %d)\n",x,y);
}

/*
ts.type = 3     --> EV_ABS  --> 坐标事件
ts.code = 0     --> ABS_X   --> X轴事件
ts.value = 221  --> X轴坐标

ts.type = 3     --> EV_ABS  --> 坐标事件
ts.code = 1     --> ABS_Y   --> Y轴事件
ts.value = 449  --> Y轴坐标

ts.type = 1     --> EV_KEY      --> 按键事件
ts.code = 330   --> BTN_TOUCH   --> 触摸屏事件
ts.value = 1    --> 按下触摸屏事件

ts.type = 1     --> EV_KEY      --> 按键事件
ts.code = 330   --> BTN_TOUCH   --> 触摸屏事件
ts.value = 0    --> 松开触摸屏事件
*/